Conversation
There was a problem hiding this comment.
Pull request overview
This PR implements a comprehensive groups management feature for the teacher dashboard, allowing teachers to create and manage user groups, assign group collaborators with different permission levels, and associate groups with contests.
Changes:
- Added complete groups management functionality with CRUD operations for groups, members, and collaborators
- Implemented access control for group collaborators with Edit, Manage, and Owner permission levels
- Integrated groups with contests, allowing teachers to add/remove groups from contests
- Added full i18n support for both English and Polish
Reviewed changes
Copilot reviewed 35 out of 35 changed files in this pull request and generated 20 comments.
Show a summary per file
| File | Description |
|---|---|
src/routes/dashboard/teacher/groups/groups.remote.ts |
Remote functions for listing and creating groups |
src/routes/dashboard/teacher/groups/[groupId]/group.remote.ts |
Remote functions for group details, members management (get, add, remove users) |
src/routes/dashboard/teacher/groups/[groupId]/collaborators/collaborators.remote.ts |
Remote functions for group collaborators access control |
src/routes/dashboard/teacher/contests/[contestId]/groups/groups.remote.ts |
Remote functions for managing groups assigned to contests |
src/lib/services/GroupsManagementService.ts |
Service class for groups API operations |
src/lib/services/ContestsManagementService.ts |
Added methods for contest-group relationships |
src/lib/dto/group.ts |
Type definitions for Group entities and DTOs |
src/lib/dto/accessControl.ts |
Added Groups to ResourceType enum |
| UI Components (GroupCard, CreateGroupButton, etc.) | 10 new Svelte components for groups UI |
messages/en.json and messages/pl.json |
Added 130 i18n strings for groups feature |
src/lib/routes.ts |
Added TeacherGroups route constant |
src/lib/components/dashboard/utils.ts |
Added title translations for group routes |
CLAUDE.md |
New documentation file for AI code assistant guidance |
src/lib/components/dashboard/admin/contests/RemoveGroupFromContestButton.svelte
Show resolved
Hide resolved
src/lib/components/dashboard/admin/contests/AddGroupToContestButton.svelte
Show resolved
Hide resolved
src/lib/components/dashboard/admin/contests/AddGroupToContestButton.svelte
Show resolved
Hide resolved
src/routes/dashboard/teacher/groups/[groupId]/collaborators/collaborators.remote.ts
Show resolved
Hide resolved
| name: v.pipe( | ||
| v.string(), | ||
| v.nonEmpty('Group name is required'), | ||
| v.minLength(3, 'Group name must be at least 3 characters'), | ||
| v.maxLength(50, 'Group name must be at most 50 characters') |
There was a problem hiding this comment.
Validation error messages should use i18n translation keys instead of hardcoded English strings. According to the project guidelines, user-facing strings must use Paraglide messages. Replace these hardcoded strings with references to message keys like m.groups_form_name_required(), m.groups_form_name_min_length(), and m.groups_form_name_max_length() (which are already defined in the i18n files).
No description provided.